﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.IO;
using System.Web.UI;
using Microsoft.Security.Application;

namespace InhollandAirPortal {
  public class Boeking {
    #region parameters
    public string boekingscode { get; private set; }
    public PortalUser gebruiker { get; private set; }
    public Reis reis { get; private set; }
    public DateTime boekingsdatum { get; private set; }
    public bool isactief { get; private set; }
    #endregion

    public Boeking() {
      boekingscode = String.Empty;
      gebruiker = new PortalUser();
      reis = new Reis();
      boekingsdatum = DateTime.MinValue;
      isactief = false;
    }

    public Boeking(string ABoekingsCode):this() {
      Load(ABoekingsCode);
    }
    public Boeking(IDataRecord ADataRecord) {
      Load(ADataRecord);
    }

		// Boeking ophalen uit database
    private void Load(string ABoekingsCode){
      using (LoyalityDB DB = new LoyalityDB()) {
        IDataReader Reader = DB.Boeking_GetBoeking(ABoekingsCode);
        if (Reader.Read()) {
          Load(Reader);
        }
      }
    }

    private void Load(IDataRecord ARecord) {
      /* IDataRecord uitlezen en ongeldige tekens verwijderen en */
      boekingscode = Encoder.HtmlEncode(LoyalityDB.GetStringValue(ARecord, "boekingscode", String.Empty));
      int userid = LoyalityDB.GetInt32Value(ARecord, "userid", -1);
      int reisid = LoyalityDB.GetInt32Value(ARecord, "reisid", -1);
      boekingsdatum = LoyalityDB.GetDateTimeValue(ARecord, "boekingsdatum", DateTime.MinValue);
      gebruiker = new PortalUser(userid);
      reis = new Reis(reisid);
      isactief = LoyalityDB.GetBoolValue(ARecord, "isactief", false);
    }
  }


  public class BoekingsLijst : List<Boeking> {
    public BoekingsLijst() {
    }

		// Boekingslijst ophalen uit database
    public BoekingsLijst(int AUserID) {
      using (LoyalityDB DB = new LoyalityDB()) {
        IDataReader Reader = DB.User_GetBoekingsLijst(AUserID);
        while (Reader.Read()) {
         Add(new Boeking(Reader));
        }
      }
    }
  }
}